SlideShare una empresa de Scribd logo
Groovy&Grails: desarrollorápido de aplicaciones Actualización del profesorado de la familia profesional Informática y Comunicaciones 9 de Septiembre de 2010
¿QuéesGroovy&Grails?	 Combinación perfecta para el desarrollorápido de aplicaciones Groovy Lenguaje de programación Grails Entornocompleto de desarrollo (framework MVC, base de datos, tests, contenedor web) Groovy&Grails:desarrollo rápido de aplicaciones-2 © 2010 CEFIRE: Actualización del profesorado
¿Quées Groovy?	 Groovy en ingléssignificagenial Lenguaje de la plataforma Java Lenguaje de programaciónágilydinámico Característicastípicas de lenguajescomo Python, Ruby o Smalltalk Groovy&Grails:desarrollo rápido de aplicaciones-3 © 2010 CEFIRE: Actualización del profesorado
¿Quées Groovy?	 Sintaxistípica de Java Superclase de Java Evita la ceremonia de Java Groovy&Grails:desarrollo rápido de aplicaciones-4 © 2010 CEFIRE: Actualización del profesorado
¿A quiénvadirigido Groovy? A los programadores Java A los programadores de scripts A los programadoreságilesyextremos Groovy&Grails:desarrollo rápido de aplicaciones-5 © 2010 CEFIRE: Actualización del profesorado
Comparando Java y Groovy Java & Groovy Mecanismo de paquetes Sentencias Definición de clasesymétodos Estructuras de control Operadores, asignacionesyexpresiones Manejo de excepciones Declaración de literales Instanciación de objetosyllámadas a métodos ,[object Object]
Nuevasexpresionesyoperadores
Nuevasformas de declararobjetos
Nuevasestructuras de control
Nuevostipos de datos con susoperadoresyexpresiones
Todoes un objetoGroovy&Grails:desarrollo rápido de aplicaciones-6 © 2010 CEFIRE: Actualización del profesorado
Características de Groovy Brevedad del lenguaje Groovy evita la ceremoníaqueacompaña a Java Aumenta la expresividad del lenguaje(se dice más con menos) Importaautomáticamentevariospaquetes Groovy&Grails:desarrollo rápido de aplicaciones-7 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy Declaración de clases class Libro {  	private String titulo Libro (String elTitulo){ titulo = elTitulo 	} 	String getTitulo(){ 		return titulo 	} } Groovy&Grails:desarrollo rápido de aplicaciones-8 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy Scripts en Groovy Librocgg = new Libro('CursoGroovyGrails') assert cgg.getTitulo() == 'CursoGroovyGrails’ assert getTituloAlReves(cgg) == 'sliarGyvoorGosruC' String getTituloAlReves(libro) { titulo = libro.getTitulo() 	return titulo.reverse() } Groovy&Grails:desarrollo rápido de aplicaciones-9 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy GroovyBeans /*Un Bean en Java*/ class Libro{ 	String titulo; 	String getTitulo(){ 		return this.titulo; 	} 	void setTitulo(Stringstr){ this.titulo = new String(str);	 	} } Groovy&Grails:desarrollo rápido de aplicaciones-10 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy GroovyBeans /*Un Bean en Groovy*/ class Libro{ 	String titulo } Groovy&Grails:desarrollo rápido de aplicaciones-11 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy Cadenas de texto GString def part1 = 'groovy' def part2 = ['g','r','a','i','l','s'] assert "me gusta groovy grails" == "me gusta $part1 ${part2.join()}" Groovy&Grails:desarrollo rápido de aplicaciones-12 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy Groovy es un lenguaje que implementa un tipado dinámico de datos Groovy puede encargarse de asignarle el tipo de dato a nuestras variables Groovy&Grails:desarrollo rápido de aplicaciones-13 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy Tipado dinámico de datos def a = 2 //java.lang.Integer def b = 0.4f //java.lang.Float int c = 3 //java.lang.Integer float d = 4 //java.lang.Float Integer e = 6 //java.lang.Integer String f = ‘hola’ //java.lang.String Groovy&Grails:desarrollo rápido de aplicaciones-14 © 2010 CEFIRE: Actualización del profesorado
Estructuras de control en Groovy Los típicosif-else, while, switch y try-catch-finally El bloqueforutiliza la notacionfor (i in x) { cuerpo}  for(i in 1..10) printlni for(i in [1,2,3,4,5,6,7,8,9,10]) printlni Groovy&Grails:desarrollo rápido de aplicaciones-15 © 2010 CEFIRE: Actualización del profesorado
Estructuras de control en Groovy O mediante closures def alumnos = ['Pedro','Miguel','Alejandro','Elena'] alumnos.each{nombre -> printlnnombre} Groovy&Grails:desarrollo rápido de aplicaciones-16 © 2010 CEFIRE: Actualización del profesorado
Groovy en el entorno Java Groovy puede ser ejecutado en la JVM: Compilando con groovyc Sin compilar Groovy&Grails:desarrollo rápido de aplicaciones-17 © 2010 CEFIRE: Actualización del profesorado
GDK: la librería Groovy GDK esunaextensión a la librería JDK Facilita el acceso a base de datosyprocesamiento de XML Extiendelasfuncionalidades de Java Groovy&Grails:desarrollo rápido de aplicaciones-18 © 2010 CEFIRE: Actualización del profesorado
¿Quées Grails? “Grails es un framework para el desarrollo de aplicaciónes web basado en el lenguaje de programación Groovy, que a suvez se basa en la Plataforma Java” Se basa en los paradigmasCoC (Convention over Configuration)yDRY (Don’t Repeat Yourself) Groovy&Grails:desarrollo rápido de aplicaciones-19 © 2010 CEFIRE: Actualización del profesorado
¿Quées Grails? Basado en el patrónModelo Vista Controlador ModeloClases de dominio Controladores Vista Páginas GSP (Groovy Server Pages) Groovy&Grails:desarrollo rápido de aplicaciones-20 © 2010 CEFIRE: Actualización del profesorado
¿Quées Grails? El programador se olvida de determinadosaspectos de configuración Se acortan los tiempos de desarrollo Grails es un framework muyágil Groovy&Grails:desarrollo rápido de aplicaciones-21 © 2010 CEFIRE: Actualización del profesorado
¿Quées Grails? Grails no sóloes un framework de desarrollo web quesigue el patrón MVC, sinoqueesunaplataformacompleta de desarrollo Contenedor/servidor web Gestor de base de datos Empaquetado de la aplicación Realización de tests unitarios, de integración y funcionales Groovy&Grails:desarrollo rápido de aplicaciones-22 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Grails no sufre del síndromeNIH (Not Invented Here)eintegralasmejoressoluciones de software libreparaconseguir un framework muyrobusto Groovy&Grails:desarrollo rápido de aplicaciones-23 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Groovy Lenguajedinámico Potentey flexible Sintaxissencilla Integración con Java Groovy&Grails:desarrollo rápido de aplicaciones-24 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Framework Spring Framework ampliamente utilizado por los desarrolladores Java Muchos años de experiencia Groovy&Grails:desarrollo rápido de aplicaciones-25 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Hibernate Framework de persistenciaobjeto-relacional Es la base de GORM Mapeaclases de dominio contra lastablas de una base de datos Groovy&Grails:desarrollo rápido de aplicaciones-26 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto SiteMesh Renderizado HTML Patrón de diseñoDecorator Groovy&Grails:desarrollo rápido de aplicaciones-27 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Frameworks AJAX Script.aculo.us jQuery Prototype Groovy&Grails:desarrollo rápido de aplicaciones-28 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Tomcat Contenedor web No es el únicosobre el quefunciona Grails Groovy&Grails:desarrollo rápido de aplicaciones-29 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto HSQLDB Gestor de base de datos Almacenamiento en memoriao en disco Groovy&Grails:desarrollo rápido de aplicaciones-30 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto JUnit Framework para la realización de tests unitarios y de integración Muyextendido en Java Groovy&Grails:desarrollo rápido de aplicaciones-31 © 2010 CEFIRE: Actualización del profesorado
Arquitectura Groovy&Grails:desarrollo rápido de aplicaciones-32 © 2010 CEFIRE: Actualización del profesorado
Arquitectura Herramientas en líneade comandos (GANT) Facilita la escritura de código Facilita la gestión de nuestrosproyectos Gant es un sistema de automatización de tareasbasado en Apache Ant Groovy&Grails:desarrollo rápido de aplicaciones-33 © 2010 CEFIRE: Actualización del profesorado
Arquitectura Ejecución de un proyecto en Grails Groovy&Grails:desarrollo rápido de aplicaciones-34 © 2010 CEFIRE: Actualización del profesorado
Características de Grails Scaffolding     “Generaciónautomática de códigoparalascuatrooperacionesbásicas de cualquieraplicación, que son la creación, lectura, ediciónyborrado” Groovy&Grails:desarrollo rápido de aplicaciones-35 © 2010 CEFIRE: Actualización del profesorado
Características de Grails Scaffolding Clase de dominio Groovy&Grails:desarrollo rápido de aplicaciones-36 © 2010 CEFIRE: Actualización del profesorado class Libro{ 	String titulo 	static constraints = {        	title(blank:false) 	} }
Características de Grails Scaffolding dinámico Controlador de la clase Libro Vistas de la clase Libro: creadas al vuelo Groovy&Grails:desarrollo rápido de aplicaciones-37 © 2010 CEFIRE: Actualización del profesorado class LibroController{ def scaffold = Libro  }
Características de Grails Scaffolding estático Controlador de la clase Libro Groovy&Grails:desarrollo rápido de aplicaciones-38 © 2010 CEFIRE: Actualización del profesorado grails generate-all Libro class LibroController{ def index = {…} 	def list = {…} 	def show = {…} def create = {…} 	def save = {…} 	…. }
Características de Grails Scaffolding estático Vistas de la clase Libro · create.gsp · edit.gsp · list.gsp · show.gsp Groovy&Grails:desarrollo rápido de aplicaciones-39 © 2010 CEFIRE: Actualización del profesorado grails generate-all Libro
Características de Grails Tests Tests unitarios Tests de integración Tests funcionales Groovy&Grails:desarrollo rápido de aplicaciones-40 © 2010 CEFIRE: Actualización del profesorado
Características de Grails Mapeoobjeto-relacional GORM (Grails Object Relational Mapping) ,[object Object]

Más contenido relacionado

La actualidad más candente

Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket
 
PHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidPHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidIrontec
 
HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)Quique Fdez Guerra
 
El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceJose Juan R. Zuñiga
 
Webinar 5 net5-2021
Webinar 5 net5-2021Webinar 5 net5-2021
Webinar 5 net5-2021atSistemas
 

La actualidad más candente (10)

Spring boot + spock
Spring boot + spockSpring boot + spock
Spring boot + spock
 
Java poliglota
Java poliglotaJava poliglota
Java poliglota
 
grails.org.mx Primera Reunion
grails.org.mx Primera Reuniongrails.org.mx Primera Reunion
grails.org.mx Primera Reunion
 
Redefiniendo el MVC con Grails
Redefiniendo el MVC con GrailsRedefiniendo el MVC con Grails
Redefiniendo el MVC con Grails
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
PHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidPHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en Android
 
HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)
 
El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open Source
 
Webinar 5 net5-2021
Webinar 5 net5-2021Webinar 5 net5-2021
Webinar 5 net5-2021
 

Destacado

Certificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoCertificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoJose Manuel Ortega Candel
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesFran García
 
Manual de uso de la web 2.0
Manual de uso de la web 2.0Manual de uso de la web 2.0
Manual de uso de la web 2.0Domingo Gallardo
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Opersys inc.
 
Framework de test spock
Framework de test spock Framework de test spock
Framework de test spock Fran García
 
Metodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareMetodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareDomingo Gallardo
 
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...Chema Alonso
 
Configurar y utilizar Latch en Magento
Configurar y utilizar Latch en MagentoConfigurar y utilizar Latch en Magento
Configurar y utilizar Latch en MagentoChema Alonso
 
Dorking & Pentesting with Tacyt
Dorking & Pentesting with TacytDorking & Pentesting with Tacyt
Dorking & Pentesting with TacytChema Alonso
 

Destacado (20)

Inteligencia Colectiva
Inteligencia ColectivaInteligencia Colectiva
Inteligencia Colectiva
 
Certificaciones tecnológicas
Certificaciones tecnológicasCertificaciones tecnológicas
Certificaciones tecnológicas
 
Seguridad en dispositivos móviles
Seguridad en dispositivos móvilesSeguridad en dispositivos móviles
Seguridad en dispositivos móviles
 
Privacidad internet
Privacidad internetPrivacidad internet
Privacidad internet
 
Certificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoCertificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del experto
 
Por su seguridad
Por su seguridadPor su seguridad
Por su seguridad
 
Herramientas gestion proyectos
Herramientas gestion proyectosHerramientas gestion proyectos
Herramientas gestion proyectos
 
Kanban
KanbanKanban
Kanban
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
Manual de uso de la web 2.0
Manual de uso de la web 2.0Manual de uso de la web 2.0
Manual de uso de la web 2.0
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
 
Framework de test spock
Framework de test spock Framework de test spock
Framework de test spock
 
Metodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareMetodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de software
 
Testing NodeJS Security
Testing NodeJS SecurityTesting NodeJS Security
Testing NodeJS Security
 
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
 
Configurar y utilizar Latch en Magento
Configurar y utilizar Latch en MagentoConfigurar y utilizar Latch en Magento
Configurar y utilizar Latch en Magento
 
Footprinting tools for security auditors
Footprinting tools for security auditorsFootprinting tools for security auditors
Footprinting tools for security auditors
 
Dorking & Pentesting with Tacyt
Dorking & Pentesting with TacytDorking & Pentesting with Tacyt
Dorking & Pentesting with Tacyt
 

Similar a Groovy&Grails: desarrollo rápido de aplicaciones

Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011jose diaz
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaDomingo Suarez Torres
 
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!Iván López Martín
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket
 
Programacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdfProgramacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdfAnonymousNdBOr4
 
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!Iván López Martín
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfonycsalazart
 
Introduction a Groovy
Introduction a  GroovyIntroduction a  Groovy
Introduction a GroovyAlex Fuentes
 
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Fátima Casaú Pérez
 
Desarrollo móvil híbrido bien entendido
Desarrollo móvil híbrido bien entendidoDesarrollo móvil híbrido bien entendido
Desarrollo móvil híbrido bien entendidoJosé Manuel López
 
NET5 el nuevo framework unificado para gobernarlos a todos
NET5 el nuevo framework unificado para gobernarlos a todosNET5 el nuevo framework unificado para gobernarlos a todos
NET5 el nuevo framework unificado para gobernarlos a todosSanti Macias Rodriguez
 
HTML5 y los desafíos del desarrollo web de HOY
HTML5 y los desafíos del desarrollo web de HOYHTML5 y los desafíos del desarrollo web de HOY
HTML5 y los desafíos del desarrollo web de HOYJuan Eladio Sánchez Rosas
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsEsteban Saavedra
 
Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologiesMiguel Garcia Ponce
 

Similar a Groovy&Grails: desarrollo rápido de aplicaciones (20)

Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador Java
 
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
 
Eleva tu capacidad con Groovy
Eleva tu capacidad con GroovyEleva tu capacidad con Groovy
Eleva tu capacidad con Groovy
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX Madrid
 
Programacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdfProgramacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdf
 
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
 
Swift
SwiftSwift
Swift
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
Introduction a Groovy
Introduction a  GroovyIntroduction a  Groovy
Introduction a Groovy
 
Introducción a Java FX
Introducción a Java FXIntroducción a Java FX
Introducción a Java FX
 
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
 
Desarrollo móvil híbrido bien entendido
Desarrollo móvil híbrido bien entendidoDesarrollo móvil híbrido bien entendido
Desarrollo móvil híbrido bien entendido
 
NET5 el nuevo framework unificado para gobernarlos a todos
NET5 el nuevo framework unificado para gobernarlos a todosNET5 el nuevo framework unificado para gobernarlos a todos
NET5 el nuevo framework unificado para gobernarlos a todos
 
HTML5 y los desafíos del desarrollo web de HOY
HTML5 y los desafíos del desarrollo web de HOYHTML5 y los desafíos del desarrollo web de HOY
HTML5 y los desafíos del desarrollo web de HOY
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Taller Groovy
Taller GroovyTaller Groovy
Taller Groovy
 
Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologies
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 

Último

HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdfIsabelHuairaGarma
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialEducática
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respetocdraco
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024DanielErazoMedina
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf7adelosriosarangojua
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdffrank0071
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfManuelCampos464987
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesPABLOCESARGARZONBENI
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiegoCampos433849
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestrerafaelsalazar0615
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfMarianneBAyn
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.sofiasonder
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadaspqeilyn0827
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxTaim11
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx44652726
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 

Último (20)

HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdf
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 

Groovy&Grails: desarrollo rápido de aplicaciones

  • 1. Groovy&Grails: desarrollorápido de aplicaciones Actualización del profesorado de la familia profesional Informática y Comunicaciones 9 de Septiembre de 2010
  • 2. ¿QuéesGroovy&Grails? Combinación perfecta para el desarrollorápido de aplicaciones Groovy Lenguaje de programación Grails Entornocompleto de desarrollo (framework MVC, base de datos, tests, contenedor web) Groovy&Grails:desarrollo rápido de aplicaciones-2 © 2010 CEFIRE: Actualización del profesorado
  • 3. ¿Quées Groovy? Groovy en ingléssignificagenial Lenguaje de la plataforma Java Lenguaje de programaciónágilydinámico Característicastípicas de lenguajescomo Python, Ruby o Smalltalk Groovy&Grails:desarrollo rápido de aplicaciones-3 © 2010 CEFIRE: Actualización del profesorado
  • 4. ¿Quées Groovy? Sintaxistípica de Java Superclase de Java Evita la ceremonia de Java Groovy&Grails:desarrollo rápido de aplicaciones-4 © 2010 CEFIRE: Actualización del profesorado
  • 5. ¿A quiénvadirigido Groovy? A los programadores Java A los programadores de scripts A los programadoreságilesyextremos Groovy&Grails:desarrollo rápido de aplicaciones-5 © 2010 CEFIRE: Actualización del profesorado
  • 6.
  • 10. Nuevostipos de datos con susoperadoresyexpresiones
  • 11. Todoes un objetoGroovy&Grails:desarrollo rápido de aplicaciones-6 © 2010 CEFIRE: Actualización del profesorado
  • 12. Características de Groovy Brevedad del lenguaje Groovy evita la ceremoníaqueacompaña a Java Aumenta la expresividad del lenguaje(se dice más con menos) Importaautomáticamentevariospaquetes Groovy&Grails:desarrollo rápido de aplicaciones-7 © 2010 CEFIRE: Actualización del profesorado
  • 13. El código de Groovy Declaración de clases class Libro { private String titulo Libro (String elTitulo){ titulo = elTitulo } String getTitulo(){ return titulo } } Groovy&Grails:desarrollo rápido de aplicaciones-8 © 2010 CEFIRE: Actualización del profesorado
  • 14. El código de Groovy Scripts en Groovy Librocgg = new Libro('CursoGroovyGrails') assert cgg.getTitulo() == 'CursoGroovyGrails’ assert getTituloAlReves(cgg) == 'sliarGyvoorGosruC' String getTituloAlReves(libro) { titulo = libro.getTitulo() return titulo.reverse() } Groovy&Grails:desarrollo rápido de aplicaciones-9 © 2010 CEFIRE: Actualización del profesorado
  • 15. El código de Groovy GroovyBeans /*Un Bean en Java*/ class Libro{ String titulo; String getTitulo(){ return this.titulo; } void setTitulo(Stringstr){ this.titulo = new String(str); } } Groovy&Grails:desarrollo rápido de aplicaciones-10 © 2010 CEFIRE: Actualización del profesorado
  • 16. El código de Groovy GroovyBeans /*Un Bean en Groovy*/ class Libro{ String titulo } Groovy&Grails:desarrollo rápido de aplicaciones-11 © 2010 CEFIRE: Actualización del profesorado
  • 17. El código de Groovy Cadenas de texto GString def part1 = 'groovy' def part2 = ['g','r','a','i','l','s'] assert "me gusta groovy grails" == "me gusta $part1 ${part2.join()}" Groovy&Grails:desarrollo rápido de aplicaciones-12 © 2010 CEFIRE: Actualización del profesorado
  • 18. El código de Groovy Groovy es un lenguaje que implementa un tipado dinámico de datos Groovy puede encargarse de asignarle el tipo de dato a nuestras variables Groovy&Grails:desarrollo rápido de aplicaciones-13 © 2010 CEFIRE: Actualización del profesorado
  • 19. El código de Groovy Tipado dinámico de datos def a = 2 //java.lang.Integer def b = 0.4f //java.lang.Float int c = 3 //java.lang.Integer float d = 4 //java.lang.Float Integer e = 6 //java.lang.Integer String f = ‘hola’ //java.lang.String Groovy&Grails:desarrollo rápido de aplicaciones-14 © 2010 CEFIRE: Actualización del profesorado
  • 20. Estructuras de control en Groovy Los típicosif-else, while, switch y try-catch-finally El bloqueforutiliza la notacionfor (i in x) { cuerpo} for(i in 1..10) printlni for(i in [1,2,3,4,5,6,7,8,9,10]) printlni Groovy&Grails:desarrollo rápido de aplicaciones-15 © 2010 CEFIRE: Actualización del profesorado
  • 21. Estructuras de control en Groovy O mediante closures def alumnos = ['Pedro','Miguel','Alejandro','Elena'] alumnos.each{nombre -> printlnnombre} Groovy&Grails:desarrollo rápido de aplicaciones-16 © 2010 CEFIRE: Actualización del profesorado
  • 22. Groovy en el entorno Java Groovy puede ser ejecutado en la JVM: Compilando con groovyc Sin compilar Groovy&Grails:desarrollo rápido de aplicaciones-17 © 2010 CEFIRE: Actualización del profesorado
  • 23. GDK: la librería Groovy GDK esunaextensión a la librería JDK Facilita el acceso a base de datosyprocesamiento de XML Extiendelasfuncionalidades de Java Groovy&Grails:desarrollo rápido de aplicaciones-18 © 2010 CEFIRE: Actualización del profesorado
  • 24. ¿Quées Grails? “Grails es un framework para el desarrollo de aplicaciónes web basado en el lenguaje de programación Groovy, que a suvez se basa en la Plataforma Java” Se basa en los paradigmasCoC (Convention over Configuration)yDRY (Don’t Repeat Yourself) Groovy&Grails:desarrollo rápido de aplicaciones-19 © 2010 CEFIRE: Actualización del profesorado
  • 25. ¿Quées Grails? Basado en el patrónModelo Vista Controlador ModeloClases de dominio Controladores Vista Páginas GSP (Groovy Server Pages) Groovy&Grails:desarrollo rápido de aplicaciones-20 © 2010 CEFIRE: Actualización del profesorado
  • 26. ¿Quées Grails? El programador se olvida de determinadosaspectos de configuración Se acortan los tiempos de desarrollo Grails es un framework muyágil Groovy&Grails:desarrollo rápido de aplicaciones-21 © 2010 CEFIRE: Actualización del profesorado
  • 27. ¿Quées Grails? Grails no sóloes un framework de desarrollo web quesigue el patrón MVC, sinoqueesunaplataformacompleta de desarrollo Contenedor/servidor web Gestor de base de datos Empaquetado de la aplicación Realización de tests unitarios, de integración y funcionales Groovy&Grails:desarrollo rápido de aplicaciones-22 © 2010 CEFIRE: Actualización del profesorado
  • 28. Software de códigoabierto Grails no sufre del síndromeNIH (Not Invented Here)eintegralasmejoressoluciones de software libreparaconseguir un framework muyrobusto Groovy&Grails:desarrollo rápido de aplicaciones-23 © 2010 CEFIRE: Actualización del profesorado
  • 29. Software de códigoabierto Groovy Lenguajedinámico Potentey flexible Sintaxissencilla Integración con Java Groovy&Grails:desarrollo rápido de aplicaciones-24 © 2010 CEFIRE: Actualización del profesorado
  • 30. Software de códigoabierto Framework Spring Framework ampliamente utilizado por los desarrolladores Java Muchos años de experiencia Groovy&Grails:desarrollo rápido de aplicaciones-25 © 2010 CEFIRE: Actualización del profesorado
  • 31. Software de códigoabierto Hibernate Framework de persistenciaobjeto-relacional Es la base de GORM Mapeaclases de dominio contra lastablas de una base de datos Groovy&Grails:desarrollo rápido de aplicaciones-26 © 2010 CEFIRE: Actualización del profesorado
  • 32. Software de códigoabierto SiteMesh Renderizado HTML Patrón de diseñoDecorator Groovy&Grails:desarrollo rápido de aplicaciones-27 © 2010 CEFIRE: Actualización del profesorado
  • 33. Software de códigoabierto Frameworks AJAX Script.aculo.us jQuery Prototype Groovy&Grails:desarrollo rápido de aplicaciones-28 © 2010 CEFIRE: Actualización del profesorado
  • 34. Software de códigoabierto Tomcat Contenedor web No es el únicosobre el quefunciona Grails Groovy&Grails:desarrollo rápido de aplicaciones-29 © 2010 CEFIRE: Actualización del profesorado
  • 35. Software de códigoabierto HSQLDB Gestor de base de datos Almacenamiento en memoriao en disco Groovy&Grails:desarrollo rápido de aplicaciones-30 © 2010 CEFIRE: Actualización del profesorado
  • 36. Software de códigoabierto JUnit Framework para la realización de tests unitarios y de integración Muyextendido en Java Groovy&Grails:desarrollo rápido de aplicaciones-31 © 2010 CEFIRE: Actualización del profesorado
  • 37. Arquitectura Groovy&Grails:desarrollo rápido de aplicaciones-32 © 2010 CEFIRE: Actualización del profesorado
  • 38. Arquitectura Herramientas en líneade comandos (GANT) Facilita la escritura de código Facilita la gestión de nuestrosproyectos Gant es un sistema de automatización de tareasbasado en Apache Ant Groovy&Grails:desarrollo rápido de aplicaciones-33 © 2010 CEFIRE: Actualización del profesorado
  • 39. Arquitectura Ejecución de un proyecto en Grails Groovy&Grails:desarrollo rápido de aplicaciones-34 © 2010 CEFIRE: Actualización del profesorado
  • 40. Características de Grails Scaffolding “Generaciónautomática de códigoparalascuatrooperacionesbásicas de cualquieraplicación, que son la creación, lectura, ediciónyborrado” Groovy&Grails:desarrollo rápido de aplicaciones-35 © 2010 CEFIRE: Actualización del profesorado
  • 41. Características de Grails Scaffolding Clase de dominio Groovy&Grails:desarrollo rápido de aplicaciones-36 © 2010 CEFIRE: Actualización del profesorado class Libro{ String titulo static constraints = { title(blank:false) } }
  • 42. Características de Grails Scaffolding dinámico Controlador de la clase Libro Vistas de la clase Libro: creadas al vuelo Groovy&Grails:desarrollo rápido de aplicaciones-37 © 2010 CEFIRE: Actualización del profesorado class LibroController{ def scaffold = Libro }
  • 43. Características de Grails Scaffolding estático Controlador de la clase Libro Groovy&Grails:desarrollo rápido de aplicaciones-38 © 2010 CEFIRE: Actualización del profesorado grails generate-all Libro class LibroController{ def index = {…} def list = {…} def show = {…} def create = {…} def save = {…} …. }
  • 44. Características de Grails Scaffolding estático Vistas de la clase Libro · create.gsp · edit.gsp · list.gsp · show.gsp Groovy&Grails:desarrollo rápido de aplicaciones-39 © 2010 CEFIRE: Actualización del profesorado grails generate-all Libro
  • 45. Características de Grails Tests Tests unitarios Tests de integración Tests funcionales Groovy&Grails:desarrollo rápido de aplicaciones-40 © 2010 CEFIRE: Actualización del profesorado
  • 46.
  • 49. Restricciones en las propias clases de dominioGroovy&Grails:desarrollo rápido de aplicaciones-41 © 2010 CEFIRE: Actualización del profesorado
  • 50. Características de Grails Plugins Seguridad AJAX Realización de tests Búsqueda Informes Groovy&Grails:desarrollo rápido de aplicaciones-42 © 2010 CEFIRE: Actualización del profesorado
  • 51. Ejemplosdesarrolladoscon Grails Jobsket (http://www.jobsket.com) Uifi (http://www.uifi.es) Aloja (http://www4.uc3m.es/aloja) ManagerT1 (http://www.managert1.com) Groovy&Grails:desarrollo rápido de aplicaciones-43 © 2010 CEFIRE: Actualización del profesorado
  • 52. Enlaces de interés http://groovy.codehaus.org http://grails.org http://www.escueladegroovy.com http://www.jtech.ua.es/grails Groovy&Grails:desarrollo rápido de aplicaciones-44 © 2010 CEFIRE: Actualización del profesorado
  • 53. Bibliografía Groovy in Action(Manning) Beginning Groovy and Grails (Apress) Grails, a quick start guide (Pragmatic programmers) Groovy&Grails:desarrollo rápido de aplicaciones-45 © 2010 CEFIRE: Actualización del profesorado
  • 54. Contacto http://www.frangarcia.net fgarciarico@gmail.com http://www.twitter.com/frangarcia http://www.linkedin.com/in/frangarcia Groovy&Grails:desarrollo rápido de aplicaciones-46 © 2010 CEFIRE: Actualización del profesorado

Notas del editor

  1. - Paraquealgo se autodenominecomo genial, tienequeestarmuyseguro de simismo, al igualquealguiencuando le pone supropionombre a unaempresao un producto. Hay más de 100 lenguajesque se puedenejecutar en la Máquina Virtual de Java. Fuente: http://en.wikipedia.org/wiki/List_of_JVM_languages. Ágil porque nos ahorra mucha de la verborrea que siempre tiene Java y dinámico porque su tipado de datos es dinámico, es decir, es Groovy quien se encarga de elegir que tipo de datos es cada objeto de nuestras aplicaciones, aunque si lo deseamos, podemos especificárselo nosotros mismos.
  2. - Cuandovemosunaclaseo un script en Groovy, detectaremossusimilitud con Java, aunque también notaremos como se agiliza el código- Se puededecirque Groovy esunasuperclase de Java, puestoquepuedeutilizartodaslascaracterísticas de Java junto con algunasmáspropias de Groovy- Uno de los aspectosquemásrechazan de Java muchosdesarrolladoresessuverborrea en determinadasocasionesy se necesitademasiadocódigoparahacermuypoco.
  3. A los programadores Java, puestoque en el fondo Groovy es JavaA los programadores de scripts, puestoquees un lenguajemuyexpresivoyquepuedeconseguir mucho con muypococódigo, algoque a estetipo de desarrolladores les encanta.A los programadoreságilesyextremosyaquepuedenimplementarfácilmentesusteorias (SCRUM, XP)
  4. En Java, un simple programaqueimprima el típicoHolaMundo, suponeescribirmuchaslíneas de código. En Groovy se evita mucho de estecódigoparaconseguir lo mismo.Al evitarestecódigo “innecesario”, se aumenta la expresividad del lenguaje, puestoque con menos se dice másGroovy importaautomáticamente los paquetesgroovy.lang.*, groovy.util.*, java.lang.*, java.util.*, java.net.* yjava.io.*, asícomolasclasesjava.Math.BigIntegeryjava.Math.BigDecimal, asíquesiempre vas a poderutilizartodasestasclases sin necesidad de queseanimportadossuspaquetes al inicio del programa. Estotambiénesdiferente a Java, dondesólo se importaautomáticamente el paquetejava.lang.*.
  5. Esta sería una típica definición de una clase en Groovy con su getter y su setter. Notamos la ausencia de puntos y comas. Ya empezamos a ahorrarnos código innecesario
  6. Además de las clases en Groovy, también podemos tener scripts dentro de las mismas clases para realizar determinadas acciones sin necesidad de tener un método main. En caso de que necesitemos pasar argumentos a nuestro código Groovy.
  7. Este sería un bean en Java que define la clase Libro con una única propiedad, sobre el cual se definen sus getters y sus setters
  8. Este es el mismo bean en Groovy. En Groovy si tenemos una propiedad pública, automáticamente se crea el getter y el setter de dicha propiedad. En esta ocasión, si no le indicamos nada a la propiedad titulo, esta se configura automáticamente como privada, sin embargo, se creará como públicos sus métodos getter y setter.
  9. Estoque los programadores LAMPven normal, en Java no estan obvio y suele necesitarse mucho código para conseguir lo mismo. Si utilizamos comillas dobles, no es necesario escapar en las cadenas de texto.
  10. Groovy es un lenguaje que implementa un tipado dinámico de datos. Esto consiste en que es Groovy quien decide (si el programador no indica otra cosa diferente) que tipo de datos es una variable.
  11. Como vemos en el anterior código, en las dos primeras declaraciones de variables, dejamos que sea Groovy quien se encargue de asignarle el tipo de datos a las variables a y b, mientras que en las dos segundas le especificamos un tipo de datos primitivo aunque sabemos que Groovy lo va a tratar como tipo de dato referencia.Por último, en las dos últimas especificamos directamente el tipo de dato referencia que estamos definiendo
  12. Groovy hereda de Java los típicos if-else, while, switch y try-catch-finally de Java, pero modifica la forma en la que se implementan los bucles for. Cualquier variable que sea iterable va a poder ser utilizada en un bucle for
  13. El programador se olvida de determinados aspectos de configuración, siempre que sigan las convenciones establecidas por los desarrolladores.
  14. Comentarque en la versión 1.2 se añade la posibilidad de utilizar Tomcat comocontenedorde aplicaciones. Hacer hincapie en que no es único sobre el que funcionarán nuestras aplicaciones hechas en Grails, sino que simplemente es este el que viene en la distribución de Grails para ejecutar nuestra aplicación
  15. Comentar los tres niveles por defecto con los que viene Grails, (desarrollo, test y producción) y que posteriormente veremos un ejemplo del fichero de configuración del acceso a la base de datos
  16. Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  17. Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  18. Comentar que los métodos del controlador de la clase Libro son los que hay en una plantilla de Grails y que pueden ser modificados fácilmente por nosotros para realizar una serie de cambios y así poder crear la máquina de crear aplicaciones.
  19. Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  20. Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  21. Los tests unitarios son aquellos que comprueban la validez de nuestras clases sin tener en cuenta las relaciones con el resto del sistema (otras clases, sistema de ficheros, conexiones de red, etc)Los tests de integración comprueban la validez de nuestras clases cuando se relacionan con el resto del sistema (otras clases, sistema de ficheros, conexiones de red, etc)Los tests funcionales comprueban la funcionalidad de nuestra aplicación. Selenium y Canoo son dos frameworks que nos permitirán desarrollar este tipo de tests
  22. El mapeo objeto-relacional nos permite convertir datos obtenidos de una base de datos relacional para poder trabajar con los paradigmas de los lenguajes orientados a objetos
  23. Comentar la comunidadcadavezmásgrande de pluginsdesarrolladosporlos usuarios. Hay cerca de 350 plugins disponibles para la comunidad de desarrolladores Grails. Este número sigue en aumento.